package com.harry9137.ct.tileentity; import com.harry9137.ct.energy.IEnergyContainer; import com.harry9137.ct.utillity.ListHelper; import com.harry9137.ct.utillity.TileHelper; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.inventory.IInventory; import net.minecraft.item.*; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IChatComponent; import net.minecraftforge.fml.common.registry.GameRegistry; import java.util.ArrayList; public class TileEntityGenerator extends TileEntity implements IEnergyContainer, IInventory, ITickUpdater { public TileEntityGenerator(){ } public int UpdateTick; public int PowerStored = 0; public int fuelBuffer = 0; public int fuelBufferMax = 40000; public ItemStack[] items = new ItemStack[1]; @Override public void updateEntity(){ ArrayList<IEnergyContainer> availableBlocks = new ArrayList<IEnergyContainer>(); if(UpdateTick == 5) { availableBlocks.clear(); for (TileEntity temp : TileHelper.getBlockSides(this)) { if (temp instanceof TileEntityWire) { ArrayList<IEnergyContainer> connectors = new ArrayList<IEnergyContainer>(); connectors.add(this); ArrayList<IEnergyContainer> temp2 = ((TileEntityWire) temp).getPossibleConnections(connectors); availableBlocks = ListHelper.combine(temp2, availableBlocks); } if (temp instanceof IEnergyContainer && !(temp instanceof TileEntityWire)) { availableBlocks.add((IEnergyContainer) temp); } } UpdateTick = 0; } for(IEnergyContainer temp3 : availableBlocks){ if(temp3.getCanReceivePower() && this.PowerStored > 0){ temp3.setPowerLevel(temp3.getEnergyLevel() + 1); temp3.onEnergyUpdate(); this.PowerStored--; } } if(items[0] != null){ System.out.println("Generator: " + Integer.toString(getItemBurnTime(items[0]))); if(getItemBurnTime(items[0]) > 0){ this.PowerStored++; if(items[0].stackSize > 1) { items[0].stackSize = items[0].stackSize - 1; } else{ items[0] = null; } } } UpdateTick++; } @Override public int getEnergyLevel() { return PowerStored; } @Override public boolean getCanSendPower() { return true; } @Override public boolean getCanReceivePower() { return false; } @Override public int getEnergyMax() { return 1000; } @Override public void onEnergyUpdate() { } @Override public void setPowerLevel(int powerLevel) { this.PowerStored = powerLevel; } @Override public int getSizeInventory() { return 1; } @Override public ItemStack getStackInSlot(int p_70301_1_) { return items[0]; } @Override public ItemStack decrStackSize(int i, int j) { if (items[i] != null) { if (items[i].stackSize <= j) { ItemStack itemstack = items[i]; items[i] = null; markDirty(); return itemstack; } ItemStack itemstack1 = items[i].splitStack(j); if (items[i].stackSize == 0) { items[i] = null; } markDirty(); return itemstack1; } else { return null; } } @Override public ItemStack getStackInSlotOnClosing(int p_70304_1_) { return null; } @Override public void setInventorySlotContents(int p_70299_1_, ItemStack p_70299_2_) { this.items[p_70299_1_] = p_70299_2_; if (p_70299_2_ != null && p_70299_2_.stackSize > this.getInventoryStackLimit()) { p_70299_2_.stackSize = this.getInventoryStackLimit(); } this.markDirty(); } @Override public int getInventoryStackLimit() { return 64; } @Override public boolean isUseableByPlayer(EntityPlayer p_70300_1_) { return true; } @Override public void openInventory(EntityPlayer playerIn) { } @Override public void closeInventory(EntityPlayer playerIn) { } @Override public boolean isItemValidForSlot(int slot, ItemStack item) { System.out.println(Integer.toString(GameRegistry.getFuelValue(item))); if(GameRegistry.getFuelValue(item) > 0){ return true; } return false; } @Override public int getField(int id) { return 0; } @Override public void setField(int id, int value) { } @Override public int getFieldCount() { return 0; } @Override public void clear() { } public static int getItemBurnTime(ItemStack p_145952_0_) { if (p_145952_0_ == null) { return 0; } else { Item item = p_145952_0_.getItem(); if (item instanceof ItemBlock && Block.getBlockFromItem(item) != Blocks.air) { Block block = Block.getBlockFromItem(item); if (block == Blocks.wooden_slab) { return 150; } if (block.getMaterial() == Material.wood) { return 300; } if (block == Blocks.coal_block) { return 16000; } } if (item instanceof ItemTool && ((ItemTool)item).getToolMaterialName().equals("WOOD")) return 200; if (item instanceof ItemSword && ((ItemSword)item).getToolMaterialName().equals("WOOD")) return 200; if (item instanceof ItemHoe && ((ItemHoe)item).getMaterialName().equals("WOOD")) return 200; if (item == Items.stick) return 100; if (item == Items.coal) return 1600; if (item == Items.lava_bucket) return 20000; if (item == Item.getItemFromBlock(Blocks.sapling)) return 100; if (item == Items.blaze_rod) return 2400; return GameRegistry.getFuelValue(p_145952_0_); } } @Override public String getName() { return null; } @Override public boolean hasCustomName() { return false; } @Override public IChatComponent getDisplayName() { return null; } }